Un module Go imite un outil de scan DNS et dissimule un chargeur Windows relié à 222 dépôts GitHub. Le réseau est actif depuis janvier et diffuse des chevaux de Troie d’accès distant ainsi que des voleurs de données, selon l’éditeur de sécurité Socket.

Socket a remonté la piste jusqu'à 222 dépôts répartis sur 190 comptes GitHub, tous liés par la même signature d'automatisation. - ©Wirestock Creators / Shutterstock
Socket a remonté la piste jusqu'à 222 dépôts répartis sur 190 comptes GitHub, tous liés par la même signature d'automatisation. - ©Wirestock Creators / Shutterstock

Le module dnsub-scanning-tool porte la signature du compte GitHub kaleidora. En langage Go, un module regroupe du code publié et réutilisable, l’équivalent d’une bibliothèque logicielle. Publié le 24 janvier dernier, celui-ci imite un outil légitime de reconnaissance réseau et cumule depuis lors plus de 1 200 versions, dont 700 jugées malveillantes par Socket. Cette accumulation provient d’un flux de commits automatisés, des enregistrements de modifications de code horodatés et conservés dans l’historique du dépôt, que le même acteur programme via GitHub Actions et que Go convertit en autant de versions distinctes. Sous couvert de cette façade de scanner, le fichier main.go lance une commande PowerShell cachée, qui récupère un contenu chiffré, le décode et l’exécute. Socket a ensuite remonté la piste jusqu’à 222 dépôts répartis sur 190 comptes GitHub, tous liés par la même signature d’automatisation.

Un chargeur PowerShell caché derrière un faux scanner

Le fichier API.db vient de muckcoding.com et ne contient aucune base de données. Certutil, un outil Windows normalement destiné aux certificats numériques, le décode en un script PowerShell , L.ps1, empilé sur trois couches chiffrées en Base64 et en XOR. La deuxième couche porte un commentaire en turc qui se traduit par « exécution directe, aucune autre étape nécessaire ». Le script final ne transporte aucun logiciel malveillant lui-même. Il cherche plutôt la chaîne « LastW » dans des contenus publiés sur Pastebin, Telegram, YouTube, Instagram ou Google Docs, puis déchiffre le texte qui la suit pour révéler l’adresse réelle de la charge utile.

L'’adresse déchiffrée mène à une archive protégée par un mot de passe et que le dépôt GitHub distinct héberge comme fichier de publication. Une fois extraite dans un dossier baptisé Windows. Microsoft. Photos, l’archive contient un exécutable nommé Microsoft.exe, dont la fenêtre reste masquée au lancement. Sa signature numérique renvoie pourtant à Exodus Movement, éditeur d’un portefeuille de cryptomonnaies. Ce décalage indique un composant détourné plutôt qu’un logiciel écrit depuis zéro. Les hachages du chargeur décodé recoupent les détections AsyncRAT, Quasar et Remcos, ainsi que le voleur d’identifiants Vidar et des mineurs de cryptomonnaies XMRig. Un même fichier Loader.exe apparaît, identique au niveau binaire, dans quatre dépôts distincts du réseau.

L'adresse déchiffrée mène à une archive protégée par un mot de passe et que le dépôt GitHub distinct héberge comme fichier de publication - ©Socket
L'adresse déchiffrée mène à une archive protégée par un mot de passe et que le dépôt GitHub distinct héberge comme fichier de publication - ©Socket

222 dépôts GitHub ont la même signature

Ces 222 dépôts partagent un flux de travail GitHub Actions identique, un mécanisme d’automatisation intégré à la plateforme, qui associe l’adresse ischhfd83@rambler.ru à un nom d’utilisateur variable, celui du propriétaire du compte de façade. Toutes les minutes environ, cette automatisation réécrit un fichier de journal, force la publication de la modification malgré l’historique existant, et attribue le commit au propriétaire visible du dépôt. Chaque projet en tire une apparence de maintenance récente. Cette mécanique rappelle une autre campagne de faux dépôts GitHub dont on vous a parlé en mars, TroyDen’s Lure Factory.

Les thèmes des dépôts ciblent des utilisateurs disposés à exécuter du code non vérifié, notamment les portefeuilles crypto MetaMask et Trust Wallet, les robots Telegram et Discord, et les triches pour jeux vidéo comme PUBG ou Valorant. Le dépôt nrevv1lad/Pubg-DESYNC-Menu affichait l’apparence d’une triche externe et proposait un guide d’installation, tandis que son arborescence source hébergeait un fichier Loader.exe lié au voleur Vidar. Socket rattache ce cluster, avec un haut niveau de confiance, à une activité que les chercheurs de Sophos, Matt Wixey et Andrew O’Donnell, avaient déjà rapportée en 2025. Ils avaient recensé 141 dépôts liés à la même adresse email, dont 133 comportaient une porte dérobée. Les domaines muckcoding.com et muckdeveloper.com reprennent l’alias « Muck », que cette précédente enquête avait déjà relevé.

Go est souvent ciblé par des dérives de version

La dérive de version observée dans ce module n’est pas une première pour l’écosystème Go. En février 2025, Socket avait déjà décrit un module intitulé boltdb-go/bolt, qui usurpait la base de données BoltDB et profitait de la mise en cache permanente du Go Module Proxy pour survivre plus de trois ans après sa publication initiale. Le procédé diffère de celui d’Operation Muck and Load, où l’empilement de versions simule une maintenance active plutôt qu’il ne dissimule un nettoyage de dépôt, mais les deux affaires exploitent la même confiance accordée par défaut au système de paquets du langage. Le module Go n'est d’ailleurs pas la seule cible récente de ce type d’opération, puisqu’une campagne nord-coréenne, PolinRider, a récemment touché des paquets npm, Composer et Go dans le même mouvement.

Les dispositifs de détection progressent en retour. GitLab a neutralisé un module nommé qiniiu/qmgo, une copie presque identique du pilote MongoDB légitime qiniu/qmgo. L’entreprise dit l’avoir retiré en dix-neuf heures après signalement. L’Operation Muck and Load est active depuis janvier et les chercheurs ne l’ont repérée qu’après l’accumulation de centaines de versions.

La Go Security Team a retiré dnsub-scanning-tool du Go Module Proxy après le signalement de Socket.

À découvrir
Meilleur antivirus : le comparatif en 2026
Comparatifs services
Foire aux questionsContenu généré par l’IA
Qu’est-ce que le Go Module Proxy, et pourquoi peut-il prolonger la vie d’un paquet malveillant ?

Le Go Module Proxy est une infrastructure intermédiaire qui met en cache les versions de modules Go pour accélérer les téléchargements et rendre les builds reproductibles. Concrètement, quand un module est récupéré une première fois, ses versions peuvent rester disponibles via le proxy même si le dépôt d’origine change ou disparaît. Cela complique la disparition “rapide” d’un module malveillant, car des versions déjà mises en cache peuvent continuer à être servies à des outils d’intégration ou à des développeurs. La suppression par l’équipe sécurité de Go retire le module du proxy officiel, mais des caches, miroirs ou proxys privés peuvent encore le conserver. D’où l’importance de verrouiller précisément les dépendances et de surveiller les mises à jour inattendues.

Comment GitHub Actions peut-il servir à automatiser une campagne de dépôts frauduleux ?

GitHub Actions est un système d’automatisation (CI/CD) capable d’exécuter des tâches planifiées, comme modifier des fichiers, compiler, publier et pousser des commits. Un acteur malveillant peut s’en servir pour produire à intervalles réguliers des commits artificiels, donnant l’illusion d’un projet “vivant” et maintenu. Ces workflows peuvent aussi standardiser la propagation : mêmes scripts, mêmes artefacts publiés, mêmes signatures techniques à travers des dizaines ou centaines de dépôts. À grande échelle, cela permet de multiplier les “points d’entrée” et d’augmenter les chances qu’un utilisateur clone, installe ou exécute du code piégé. Pour les analystes, la répétition d’un même workflow et de métadonnées (emails, patterns de commit) devient aussi un indicateur de lien entre dépôts.

Pourquoi empiler du Base64 et du XOR dans un script PowerShell complique-t-il l’analyse d’un chargeur Windows ?

Base64 et XOR sont des techniques simples d’encodage/obfuscation qui rendent un contenu moins lisible sans nécessiter de chiffrement complexe. En les empilant en plusieurs couches, le script force l’analyste à reconstituer la chaîne complète de décodage avant de voir la logique finale, ce qui ralentit les contrôles rapides et certains outils de détection. PowerShell est fréquemment utilisé comme “chargeur” car il peut télécharger, décoder et exécuter du contenu en mémoire avec peu de traces visibles côté interface. Le résultat est souvent une exécution en plusieurs étapes : un premier script ne contient pas le malware final, mais récupère des indices (URL, mot de passe, payload) depuis des services légitimes. Cette séparation réduit aussi le risque de voir le binaire final détecté directement dans le dépôt initial.